package smedi.ismedi.web.bff;

import com.smedi.ismedi.authoritymanagement.api.feign.*;
import com.smedi.ismedi.constructionproject.api.feign.RemoteBidSectionFeignApi;
import com.smedi.ismedi.constructionproject.api.feign.RemoteConstructionProjectFeignApi;
import com.smedi.ismedi.constructionproject.api.feign.RemoteProjectApplyFeignApi;
import com.smedi.ismedi.constructionproject.api.feign.RemoteProjectAssignmentFeignApi;
import com.smedi.ismedi.dangeroussourcemanage.api.feign.RemoteDangerousSourceManageFeignApi;
import com.smedi.ismedi.dictionary.feign.RemoteDictionaryFeignApi;
import com.smedi.ismedi.dictionary.feign.RemoteDictionaryQueryFeignApi;
import com.smedi.ismedi.draft.api.feign.RemoteDraftFeignApi;
import com.smedi.ismedi.equipment.api.feign.RemoteEquipmentFeignApi;
import com.smedi.ismedi.file.feign.RemoteFileFeignApi;
import com.smedi.ismedi.inmail.api.feign.RemoteAnnouncementFeignApi;
import com.smedi.ismedi.inmail.api.feign.RemoteOverviewFeignApi;
import com.smedi.ismedi.inmail.api.feign.RemoteSafetyBoardFeignApi;
import com.smedi.ismedi.instrument.api.feign.RemoteQualityCheckFeignApi;
import com.smedi.ismedi.instrument.api.feign.RemoteQualityHiddenDangerFeignApi;
import com.smedi.ismedi.instrument.api.feign.RemoteInstrumentFeignApi;
import com.smedi.ismedi.labor.api.feign.RemoteLaborAssistFeignApi;
import com.smedi.ismedi.labor.api.feign.RemoteLaborCoreFeignApi;
import com.smedi.ismedi.majorhazard.api.feign.RemoteMajorHazardFeignApi;
import com.smedi.ismedi.organization.api.feign.RemoteHrOrganizationFeignApi;
import com.smedi.ismedi.organization.api.feign.RemoteProjectOrganizationFeignApi;
import com.smedi.ismedi.personnel.api.feign.RemotePersonAssistFeignApi;
import com.smedi.ismedi.personnel.api.feign.RemotePersonCoreFeignApi;
import com.smedi.ismedi.personnel.api.feign.RemotePersonValidateFeignApi;
import com.smedi.ismedi.progress.api.feign.RemoteProgressFeignApi;
import com.smedi.ismedi.qualityteam.feign.RemoteSubjectFeignApi;
import com.smedi.ismedi.qualityteam.feign.RemoteSubjectProcessFeignApi;
import com.smedi.ismedi.qualityteam.feign.RemoteSubjectRecordFeignApi;
import com.smedi.ismedi.qualityteam.feign.RemoteTeamFeignApi;
import com.smedi.ismedi.report.api.feign.RemoteReportCheckFeignApi;
import com.smedi.ismedi.safety.education.api.feign.RemoteDailyMorningMeetingFeignApi;
import com.smedi.ismedi.safety.education.api.feign.RemotePreFestivalSafetyEducationFeignApi;
import com.smedi.ismedi.safety.education.api.feign.RemoteSpecialTrainingFeignApi;
import com.smedi.ismedi.safetycheck.feign.*;
import com.smedi.ismedi.securityman.api.feign.RemoteAllowanceFeignApi;
import com.smedi.ismedi.securityman.api.feign.RemoteOfficerAssessmentFeignApi;
import com.smedi.ismedi.securityman.api.feign.RemoteOfficerManagementFeignApi;
import com.smedi.ismedi.securityman.api.feign.RemoteTrainingRecordFeignApi;
import com.smedi.ismedi.video.monitor.api.feign.RemoteMonitorSettingFeignApi;
import com.smedi.ismedi.video.monitor.api.feign.RemoteMultiScreenMonitorFeignApi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

// TODO 解决数据字典引入会带入Hibernate的依赖
@SpringBootApplication(exclude = {
        DataSourceAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class,
        HibernateJpaAutoConfiguration.class},
        scanBasePackages = {"com.smedi.ismedi", "smedi.ismedi"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {
        "com.smedi.ismedi.safety.education.api.feign",
        "com.smedi.ismedi.video.monitor.api.feign",
        "com.smedi.ismedi.file.feign",
        "com.smedi.ismedi.dictionary.feign",
        "com.smedi.ismedi.safetycheck.feign",
        "com.smedi.ismedi.organization.api.feign",
        "com.smedi.ismedi.personnel.api.feign",
        "com.smedi.ismedi.constructionproject.api.feign",
        "com.smedi.ismedi.authoritymanagement.api.feign",
        "com.smedi.ismedi.labor.api.feign",
        "com.smedi.ismedi.inmail.api.feign",
        "com.smedi.ismedi.equipment.api.feign",
        "com.smedi.ismedi.report.api.feign",
        "com.smedi.ismedi.progress.api.feign",
        "com.smedi.ismedi.draft.api.feign",
        "com.smedi.ismedi.instrument.api.feign"
}, basePackageClasses = {
        RemoteLawEnforcementVideoFeignApi.class,
        RemoteDailyMorningMeetingFeignApi.class,
        RemotePreFestivalSafetyEducationFeignApi.class,
        RemoteSpecialTrainingFeignApi.class,
        RemoteFileFeignApi.class,
        RemoteDictionaryFeignApi.class,
        RemoteDictionaryQueryFeignApi.class,
        RemoteSafetyCheckFeignApi.class,
        RemoteSafetyDailyFeignApi.class,
        RemoteInspectionRecordFeignApi.class,
        RemoteHiddenDangerFeignApi.class,
        RemoteBidSectionFeignApi.class,
        RemoteConstructionProjectFeignApi.class,
        RemoteProjectAssignmentFeignApi.class,
        RemoteHrOrganizationFeignApi.class,
        RemoteProjectOrganizationFeignApi.class,
        RemotePersonAssistFeignApi.class,
        RemotePersonCoreFeignApi.class,
        RemotePersonValidateFeignApi.class,
        RemoteAccountManagementFeignApi.class,
        RemoteAuthorityAccessFeignApi.class,
        RemoteClientLoginFeignApi.class,
        RemoteMonitorSettingFeignApi.class,
        RemoteMultiScreenMonitorFeignApi.class,
        RemoteAnnouncementFeignApi.class,
        RemoteAuthorityRoleManagementFeignApi.class,
        RemoteAuthorityInfrastructureFeignApi.class,
        RemoteDangerousSourceManageFeignApi.class,
        RemoteMajorHazardFeignApi.class,
        RemoteEquipmentFeignApi.class,
        RemoteOfficerManagementFeignApi.class,
        RemoteOfficerAssessmentFeignApi.class,
        RemoteTrainingRecordFeignApi.class,
        RemoteAllowanceFeignApi.class,
        RemoteLaborCoreFeignApi.class,
        RemoteLaborAssistFeignApi.class,
        RemoteSafetyBoardFeignApi.class,
        RemoteSafetyOrganizationFeignApi.class,
        RemoteProjectApplyFeignApi.class,
        RemoteElementFeignApi.class,
        RemoteOverviewFeignApi.class,
        RemoteReportCheckFeignApi.class,
        RemoteProgressFeignApi.class,
        RemoteDraftFeignApi.class,
        RemoteProgressFeignApi.class,
        RemoteQualityHiddenDangerFeignApi.class,
        RemoteQualityCheckFeignApi.class,
        RemoteSubjectFeignApi.class,
        RemoteSubjectProcessFeignApi.class,
        RemoteSubjectRecordFeignApi.class,
        RemoteTeamFeignApi.class,
        RemoteProgressFeignApi.class,
        RemoteInstrumentFeignApi.class
})
public class ISmediWebBffApplication {
    public static void main(String[] args) {
        SpringApplication.run(ISmediWebBffApplication.class, args);
    }
}
